package demoMod.stsconsole.interfaces;

import demoMod.stsconsole.core.AbstractCreature;
import demoMod.stsconsole.helpers.DamageInfo;

/**
 * 跟伤害相关的接口方法
 */
public interface DamageSubscriber extends ISubscriber {
    /**
     * 如果一个生物攻击，这个方法会计算这个生物造成的最终伤害
     */
    default float onAttackToChangeDamage(float damageAmount, DamageInfo info, AbstractCreature target) {
        return damageAmount;
    }

    /**
     * 如果一个生物被攻击，这个方法会计算这个生物受到的最终伤害
     */
    default float onAttackedToChangeDamage(float damageAmount, DamageInfo info, AbstractCreature target) {
        return damageAmount;
    }

    /**
     * 一个生物攻击时会调用此方法
     * @param target 被攻击的生物
     */
    default void onAttack(float damageAmount, DamageInfo info, AbstractCreature target) {}
}
